// js数字运算的精度缺失问题（数字的存储方式）
// console.log(0.1 + 0.2) // 0.30000000000000004

// 原理 在计算机中数字无论是定点数还是浮点数都是以多位二进制的方式进行存储的
// 在js中数字采用的IEEE 754的双精度标准进行存储（存储一个数值所使用的二进制位数比较多，精度更准确）

// 0.1 和 0.2 用二进制无法整除 js中采用的IEEE 754的双精度标准 在存储空间有限的情况下 当出现这种无法整除的小数的时候就会取一个近似值 在js中如果这个近似值足够近似 那么js就会认为他就是那个值

console.log(0.1000000000000001) // 打印自己本身
console.log(0.10000000000000001) // 打印0.1

// 此时对于JS来说 其不够近似于0.3 于是就出现了0.1 + 0.2 != 0.3 这个现象 当然 也并非所有的近似值相加都得不到正确的结果

// 解决办法 将浮点数转化成整数计算
// 0.1 + 0.2 => (0.1 * 10 + 0.2 * 10) / 10
console.log((0.1 * 10 + 0.2 * 10) / 10)